﻿
// 초기화
$(myInput_Init);

function myInput_Init(rootTag)
{
    if (typeof rootTag != "string") rootTag = "body";

    $(rootTag + " input[type=text][data-lsj-mask]").each(function () { $(this).mask($(this).attr('data-lsj-mask')); }); // 입력 매스크 적용
    $(rootTag + " input[type=text][data-lsj-focus]").focus(); // data-lsj-focus 속성이 포함된 input 태그에 자동으로 focus
    $(rootTag + " input[type=text][data-lsj-no-hangul]").keydown(noHangul); // 한글 입력 금지
    if ($(rootTag + " input[data-lsj-datepicker]").length > 0) $(rootTag + " input[data-lsj-datepicker]").datepicker(datepicker_options); // jquery ui datepicker 적용
    $(rootTag + " .ui-datepicker-trigger").addClass("btn btn-mini"); // jquery ui dateppicker 버튼 스타일
    $(rootTag + " input[data-lsj-submitOnEnter]").keypress(onKeypress_submitFormOnEnter); // 엔터키를 누르면, btn-primary 버튼을 클릭함
}

// 엔터키를 누르면, btn-primary 버튼을 클릭함
function onKeypress_submitFormOnEnter(event) {
    var keycode = event.keyCode || event.which;
    if (keycode == 13) {
        $(event.target).parents("form").find(".btn-primary").click();
    }
}

// 한글 입력 금지 onkeydown 핸들러
function noHangul(event) {
    var keycode = event.keyCode || event.which;
    if (keycode == 229) return false; // 한글 입력 방지
    return true;
}

// validation 확장함수
jQuery.fn.validateForm = function () {
    var msg = "";
    $(this).find("input[type=text][data-lsj-validate],input[type=password][data-lsj-validate]").each(function () {
        var rule = $(this).attr("data-lsj-validate").split(/[ ,]+/).join(",") + ","; // 단어 단위로 매칭하기 쉽게 하기 위해 변형함. 이제 단어 뒤에 쉼표가 언제나 있다.
        var val = $(this).val().trim();
        var name = $(this).attr('name');

        if (val.length == 0) {
            if (rule.match(/required/)) msg += "[" + name + "] 필수입력항목입니다\n";
            return;
        }

        // date 형식 검사
        if (rule.match(/date,/)) {
            if (!val.match(/(19|20)[0-9]{2}-(0[1-9]|1[012])-([012][0-9]|3[01])/))
                msg += "[" + name + "] 날짜 오류입니다\n";
            return;
        }
    });
    if ($(this).find("input[type=radio][data-lsj-validate~=required]").length > 0 &&
        $(this).find("input[type=radio][data-lsj-validate~=required]:checked").length == 0) {
        var name = $(this).find("input[type=radio][data-lsj-validate~=required]").attr('name');
        msg += "[" + name + "] 필수입력항목입니다\n";
    }
    if (msg.length > 0) { alert(msg); return false; }
    return true;
}

// input text 활성화 비활성화 확장함수
function keydown_막기() {
    return false;
}

function focus_막기() {
    $(".btn").focus();
}

jQuery.fn.텍스트입력활성화 = function () {
    this.unbind("keydown", keydown_막기);
    this.unbind("focus", focus_막기);
    var color = this.attr("old-background-color");
    if (color) this.css("background-color", color);
}

jQuery.fn.텍스트입력비활성화 = function () {
    this.bind("keydown", keydown_막기);
    this.bind("focus", focus_막기);
    if (!this.attr("old-background-color")) this.attr("old-background-color", this.css("background-color"));
    this.css("background-color", "#eee");
}

// jquery ui datepicker
var datepicker_options = {
    showOn: "button",
    dateFormat: "yy-mm-dd",
    monthNames: ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"],
};
